package cz.pecinovsky.česky.oopnz._134_;
//Příliš žluťoučký kůň úpěl ďábelské ódy

import cz.pecinovsky.česky.oopnz._000_.Run;

import cz.pecinovsky.česky.oopnz.utility.IO;


import static cz.pecinovsky.česky.oopnz._134_.ITovárnaOkruhů_140_.ITovárnaOkruhů;
import static cz.pecinovsky.česky.oopnz._134_.Okruh_134_        .Okruh;


//import static cz.pecinovsky.česky.oopnz._134_.TovárnaNaElka_140_.TovárnaNaElka;
////////////////////////////////////////////////////////////////////////////////
//%%+  +++++ Konec ignorovaného počátečního textu +++++

import cz.pecinovsky.česky.oopnz.utility.Barva;
import cz.pecinovsky.česky.oopnz.utility.Pozice;
//%X+ xxxxx Začátek přeskakovaného textu xxxxx
/*******************************************************************************
 *<pre>
 * Předchozí:   Není - toto_je_nově_definovaná_třída
 *              Ttt v projektu Ppp
 * Následující: Prozatím není
 *
 * Projekt  Ppp
 *   + Přidáno
 *   - Odebráno
 *   ~ Změněno
 *</pre>
 */
public class TovárnaNaElka_140_
{    private TovárnaNaElka_140_() {}   static
////////////////////////////////////////////////////////////////////////////////
//%X- ----- Konec přeskakovaného textu -----


/*******************************************************************************
 * Instance třídy {@code TovárnaNaElka} představují továrny, které jsou schopny
 * na požádání "vyrobit" okruh typu ELKO.
 *
 * @author Rudolf PECINOVSKÝ
 * @version 6.03.2017 — 2010-11-08
 */
public class TovárnaNaElka implements ITovárnaOkruhů
{
//== KONSTANTNÍ ATRIBUTY TŘÍDY =================================================
//== PROMĚNNÉ ATRIBUTY TŘÍDY ===================================================
//== STATICKÝ INICIALIZAČNÍ BLOK - STATICKÝ KONSTRUKTOR ========================
//== KONSTANTNÍ ATRIBUTY INSTANCÍ ==============================================
//== PROMĚNNÉ ATRIBUTY INSTANCÍ ================================================

     /** Implicitní barva vytvářených okruhů. */
     private Barva implicitníBarva = Barva.ČERNÁ;



//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ TŘÍDY ========================================
//== OSTATNÍ NESOUKROMÉ METODY TŘÍDY ===========================================

//##############################################################################
//== KONSTRUKTORY A TOVÁRNÍ METODY =============================================

    /***************************************************************************
     *
     */
    public TovárnaNaElka()
    {
    }



//== ABSTRAKTNÍ METODY =========================================================
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ INSTANCÍ =====================================

    /***************************************************************************
     * Nastaví implicitní barvu vytvářených okruhů.
     *
     * @param barva Nastavovaná implicitní barva
     * @return Dříve nastavená implicitní barva
     */
    @Override
    public Barva setImplicitníBarva(Barva barva)
    {
        Barva stará     = implicitníBarva;
        implicitníBarva = barva;
        return stará;
    }



//== OSTATNÍ NESOUKROMÉ METODY INSTANCÍ ========================================

    /***************************************************************************
     * Vytvoří okruh implicitní barvy se startovním polem na zadané pozici.
     *
     * @param startPozice Pozice startovního pole vytvářeného okruhu
     * @return Vytvořený okruh
     */
    @Override
    public Okruh vytvořOkruh(Pozice startPozice)
    {
        return vytvořOkruh(startPozice, implicitníBarva);
    }


    /***************************************************************************
     * Vytvoří okruh zadané barvy se startovním polem na zadané pozici.
     *
     * @param startPozice Pozice startovního pole vytvářeného okruhu
     * @param barva       Barva vytvářeného okruhu
     * @return Vytvořený okruh
     */
    @Override
    public Okruh vytvořOkruh(Pozice startPozice, Barva barva)
    {
        return Okruh.elko(startPozice, barva);
    }



//== SOUKROMÉ A POMOCNÉ METODY TŘÍDY ===========================================
//== SOUKROMÉ A POMOCNÉ METODY INSTANCÍ ========================================
//== INTERNÍ DATOVÉ TYPY =======================================================
//== TESTY A METODA MAIN =======================================================
//
//    /***************************************************************************
//     * Testovací metoda.
//     */
//    public static void test()
//    {
//        TovárnaNaElka inst = new TovárnaNaElka();
//    }
//    /** @param args Parametry příkazového řádku - nepoužívané. */
//    public static void main( String[] args )  {  test();  }
}

//%%-  ----- Začátek ignorovaného závěrečného textu -----
////////////////////////////////////////////////////////////////////////////////
//== TESTY A METODA MAIN =======================================================
//Není-li třída testovací, následující dvě metody se smažou
//%X+   Metoda připravená k vložení do testovacích tříd
     /** */
     public void testPřípravek() {}
//%X-


    /***************************************************************************
     * Třída, jejíž instance má na starosti úklid mezi jednotlivými testy,
     * který není možno zakomponovat do metody {@code tearDown()},
     * dokud nebudou studenti umět programovat.
     */
    private static class TearDown implements Run.ITD
    {
        /** {@inheritDoc} */
        @Override
        public void ukliď()
        {
//            Plátno.smažPlátno();
//            SprávcePlátna.getInstance().odstraňVše();
        }
    }


    /***************************************************************************
     * Testovací metoda.
     */
    public static void test()
    {
//        Run.tests(Test.class,
//                new TearDown(),
//                "testPřípravek",
//                "");
        IO.zpráva("Až se pokocháš, stiskni OK");
        System.exit(0);
    }
    /** @param args Parametry příkazového řádku - nepoužívané. */
    public static void main( String[] args )  {  test();  }
}
